using System.Collections.Generic;

namespace SharedObjects
{
	///<summary>
	/// An objective is like a complex state flag in a mission "script". 
	/// It can either be normally visible, ie. listed in the mission description or hidden, to track other mission events.
	/// It is possible and allowed to have all objectives in a task invisible.
	///</summary>
	public class StoryTaskObjective : StoryBase
	{
		public bool IsVisible { get; set; } //is this objective user-visible?

		public bool IsComplete { get; set; } //is the objective completed?
		public bool IsSuccess { get; set; } //was the completion successful or failed?

		public ObjectiveObjectType ObjectType { get; set; } //is it a file or a database record
		public ulong ObjectId { get; set; }					//the id of the file/record

		/// <summary>
		/// what action is required for this objective (delete/copy/place file or modify/delete/create record)
		/// </summary>
		public ObjectiveAction RequiredAction { get; set; }	

		/// <summary>
		/// if the object type is a record, the requiredAction can have parameters, for the details of the record manipulation
		/// </summary>
		public List<ObjectiveActionParameter> Parameter { get; set; } 
	}
}